package com.zy.design.demo.structural;

/**
 * 代理模式
 * 特点：通过代理对象访问目标对象。
 */
interface Bank {
    void deposit(String passWord);
}
//某银行
class RealBank implements Bank {
    public void deposit(String passWord) {
        if ("123456".equals(passWord)){
            System.out.println("存款操作");
        }else {
            System.out.println("密码错误，非法代理");
        }
    }
}
//代理
class BankProxy implements Bank {
    private RealBank realBank;

    public void deposit(String passWord) {
        System.out.println("开始校验权限");
        if (realBank == null) realBank = new RealBank();
        if ("999999".equals(passWord)){
            realBank.deposit("123456");
        }
    }
}

class Main6 {
    public static void main(String[] args) {
        Bank bank = new BankProxy();
        bank.deposit("999999");
    }
}
